<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
    <input id="file" type="file" multiple="multiple">
    <input type="text" id="md5">
    <script type="text/javascript" src="jquery-3.1.1.min.js"></script> 
    <script type="text/javascript" src="spark-md5.js"></script> 
    <script type="text/javascript">
        var blobSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice,
                input = $('#file'),
                running = false;
    　　$("#file").on("focus",function () {
            $("#md5").val("");//添加文件时，#md5清空
        });
        $("#file").on("blur",function () {
            if($("#file").val()){ //#file失去焦点时，文件特别大时#md5显示提示内容
                $("#md5").val("正在生成MD5码，请稍等...").css("color","red");
            }
    　　　　if (running) {
                return;
            }
            if (!input.files.length) {
                return;
            }
            var fileReader = new FileReader(),
                    file = input.files[0];
            fileReader.onload = function (e) {
                running = false;
                if (file.size != e.target.result.byteLength) {
                    return false;
                } else {
                    $("#md5").val(SparkMD5.ArrayBuffer.hash(e.target.result)).css("color","black");//生成md5码
                }
            };
            running = true;
            fileReader.readAsArrayBuffer(file);
        });
    </script>

</body>
</html>

<!-- 
js-spark-md5是歪果仁开发的东西，有点多，但是我们只要一个js文件即可，具体类包我存在自己的oschina上，下载地址：https://git.oschina.net/jianqingwang/js-spark-md5

js-spark-md5是做什么的？    js-spark-md5是号称全宇宙最快的前端类包，可以无需上传文件就快速获取本地文件md5.

可能你觉得这没什么，但是，当你做一个文件系统时候，就有这需求，用这个简单的前端类库就能实现你“秒传”的功能！这里我解释下，每个文件的md5值都是唯一的，这也是很多下载网站，会告诉你原文件的md5是多少，然后下载完毕让你自行去对比下，如果一致，就说明文件是完整的。

好了，正因为每个文件的md5是一样的，那么，我们在做文件上传的时候，就只要在前端先获取要上传的文件md5，并把文件md5传到服务器，对比之前文件的md5，如果存在相同的md5，我们只要把文件的名字传到服务器关联之前的文件即可，并不需要再次去上传相同的文件，再去耗费存储资源、上传的时间、网络带宽。

js-spark-md5使用教程：

1.先引入js类包

2.写文件表单 -->


<!-- ，spark.end()就是文件的md5值，文件引用顺序一定不能倒了，要不无法正常工作。 -->